package cn.home.contract.domain;

import java.util.Date;

import cn.home.resident.domain.HomeUser;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.home.common.annotation.Excel;
import cn.home.common.core.domain.BaseEntity;

/**
 * 待处理签约对象 home_contract_info
 * 
 * @author homedoctor
 * @date 2025-04-09
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HomeContractUntreated extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    private HomeUser user;
    private HomeUser parent;
    private HomeUser spouse;
    /** 签约编号 */
    private Long id;

    @Excel(name="用户的tagid")
    private String tagid;

    @Excel(name="用户的tagName")
    private String tagName;

    @Excel(name="机构名")
    private String organizationName;
    @Excel(name="团队名")
    private String teamName;
    @Excel(name="医生名")
    private String doctorName;
    @Excel(name="服务包名")
    private String servicePackageName;

    /** 用户编号 */
    @Excel(name = "用户编号")
    private Long userId;

    /** 审批状态:待审核 1，待支付 2，已驳回 0 */
    @Excel(name = "审批状态:待审核 1，待支付 2，已驳回 0")
    private Long status;

    /** 生效状态：已生效0，未生效1 */
    @Excel(name = "生效状态：已生效0，未生效1")
    private String effectiveStatus;

    /** 签约机构编号 */
    @Excel(name = "签约机构编号")
    private Long organization;

    /** 签约团队编号 */
    @Excel(name = "签约团队编号")
    private Long team;

    /** 签约医生编号 */
    @Excel(name = "签约医生编号")
    private Long doctor;

    /** 签约服务包编号 */
    @Excel(name = "签约服务包编号")
    private Long servicePackage;

    /** 签约周期 */
    @Excel(name = "签约周期")
    private String cycle;

    /** 签约类型:0首次:1非首次 */
    @Excel(name = "签约类型:0首次:1非首次")
    private Long type;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationTime;

    /** 生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 到期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expirationTime;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paytime;

    /** 支付方式:数据字典 */
    @Excel(name = "支付方式:数据字典")
    private Long payment;

    /** 审批人 */
    @Excel(name = "审批人")
    private String reviewer;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date approvalTime;

    /** 驳回原因 */
    @Excel(name = "驳回原因")
    private String reason;

    /** 最后修改时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后修改时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastModifyTime;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setEffectiveStatus(String effectiveStatus) 
    {
        this.effectiveStatus = effectiveStatus;
    }

    public String getEffectiveStatus() 
    {
        return effectiveStatus;
    }

    public void setOrganization(Long organization) 
    {
        this.organization = organization;
    }

    public Long getOrganization() 
    {
        return organization;
    }

    public void setTeam(Long team) 
    {
        this.team = team;
    }

    public Long getTeam() 
    {
        return team;
    }

    public void setDoctor(Long doctor) 
    {
        this.doctor = doctor;
    }

    public Long getDoctor() 
    {
        return doctor;
    }

    public void setServicePackage(Long servicePackage) 
    {
        this.servicePackage = servicePackage;
    }

    public Long getServicePackage() 
    {
        return servicePackage;
    }

    public void setCycle(String cycle) 
    {
        this.cycle = cycle;
    }

    public String getCycle() 
    {
        return cycle;
    }

    public void setType(Long type) 
    {
        this.type = type;
    }

    public Long getType() 
    {
        return type;
    }

    public void setApplicationTime(Date applicationTime) 
    {
        this.applicationTime = applicationTime;
    }

    public Date getApplicationTime() 
    {
        return applicationTime;
    }

    public void setEffectiveDate(Date effectiveDate) 
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate() 
    {
        return effectiveDate;
    }

    public void setExpirationTime(Date expirationTime) 
    {
        this.expirationTime = expirationTime;
    }

    public Date getExpirationTime() 
    {
        return expirationTime;
    }

    public void setPaytime(Date paytime) 
    {
        this.paytime = paytime;
    }

    public Date getPaytime() 
    {
        return paytime;
    }

    public void setPayment(Long payment) 
    {
        this.payment = payment;
    }

    public Long getPayment() 
    {
        return payment;
    }

    public void setReviewer(String reviewer) 
    {
        this.reviewer = reviewer;
    }

    public String getReviewer() 
    {
        return reviewer;
    }

    public void setApprovalTime(Date approvalTime) 
    {
        this.approvalTime = approvalTime;
    }

    public Date getApprovalTime() 
    {
        return approvalTime;
    }

    public void setReason(String reason) 
    {
        this.reason = reason;
    }

    public String getReason() 
    {
        return reason;
    }

    public void setLastModifyTime(Date lastModifyTime) 
    {
        this.lastModifyTime = lastModifyTime;
    }

    public Date getLastModifyTime() 
    {
        return lastModifyTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("status", getStatus())
            .append("effectiveStatus", getEffectiveStatus())
            .append("organization", getOrganization())
            .append("team", getTeam())
            .append("doctor", getDoctor())
            .append("servicePackage", getServicePackage())
            .append("cycle", getCycle())
            .append("type", getType())
            .append("applicationTime", getApplicationTime())
            .append("effectiveDate", getEffectiveDate())
            .append("expirationTime", getExpirationTime())
            .append("paytime", getPaytime())
            .append("payment", getPayment())
            .append("remark", getRemark())
            .append("reviewer", getReviewer())
            .append("approvalTime", getApprovalTime())
            .append("reason", getReason())
            .append("lastModifyTime", getLastModifyTime())
            .toString();
    }
}
